import java.util.*;
public class HasSameDigits {
  public boolean hasSameDigits(String s) {
    char[] chars = s.toCharArray();
    return dfs(chars, 1);
  }
  private boolean dfs(char[] chars, int index) {
    if(index == chars.length-1){
      return (chars[index-1] - '0') == (chars[index] - '0');
    }
    char[] tmp = chars.clone();
    for(int i = index; i< chars.length; i++){
      tmp[i] = (char) ((chars[i] - '0' + chars[i-1] - '0') % 10 + '0');
    }
    if(dfs(tmp, index + 1)){
      return true;
    }
    return false;
  }

  public static void main(String[] args) {
    String s = "323";
    System.out.println(new HasSameDigits().hasSameDigits(s));
  }
}


// 给你一个由数字组成的字符串 s 。重复执行以下操作，直到字符串恰好包含 两个 数字：

// 从第一个数字开始，对于 s 中的每一对连续数字，计算这两个数字的和 模 10。
// 用计算得到的新数字依次替换 s 的每一个字符，并保持原本的顺序。
// 如果 s 最后剩下的两个数字 相同 ，返回 true 。否则，返回 false。

 

// 示例 1：

// 输入： s = "3902"

// 输出： true

// 解释：

// 一开始，s = "3902"
// 第一次操作：
// (s[0] + s[1]) % 10 = (3 + 9) % 10 = 2
// (s[1] + s[2]) % 10 = (9 + 0) % 10 = 9
// (s[2] + s[3]) % 10 = (0 + 2) % 10 = 2
// s 变为 "292"
// 第二次操作：
// (s[0] + s[1]) % 10 = (2 + 9) % 10 = 1
// (s[1] + s[2]) % 10 = (9 + 2) % 10 = 1
// s 变为 "11"
// 由于 "11" 中的数字相同，输出为 true。
// 示例 2：